package com.foreknow.demo04;

/**
 * 构造器
 * 构造方法
 * 规则：
 * 1.构造方法的名称与类名相同
 * 2.构造方法是没有返回值类型的
 * 注意：
 * 如果没有显示的声明一个构造方法，那么系统会提供一个默认的无参数的构造方法
 * 如果一个类中显示的声明了构造方法，那么系统不再提供默认的无参数的构造方法
 * <p>
 * 语法：
 * public 类名(参数列表) {
 * <p>
 * }
 * <p>
 * 构造器如何调用： new 构造器()  例如： new Person()
 * <p>
 * 构造器的作用：
 * 1.初始化属性
 * 2.初始化对象
 */
public class Student {
  String name;
  Person person; //null 如果为null，就无法访问到Person中的属性以及方法

  public Student(String name) {
    this.name = name; //将局部变量name的值赋值给当类对象的name属性
    this.person = new Person("张三");
  }

  public void eat() {
    System.out.println(person.name + "在吃饭......");
  }

  public static void main(String[] args) {
    Student s1 = new Student("tom"); //会调用默认的无参数的构造方法
    //System.out.println(s1);//因为s1是引用类型，输出内存的地址
    //System.out.println(s1.name);
    s1.eat();

  }
}
